package medOffice.dao;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import medOffice.Paciente;
import medOffice.PlanoDeSaude;
import medOffice.Enuns.Sexo;

/**
 * Classe que inicializa o BD de pacientes.
 * 
 * @author Tiago Leite - tiagohsl@lcc.ufcg.edu.br
 * @version 1.0 </br> 02/12/09
 * 
 */
public class PacienteDAO implements Serializable{

	private static final long serialVersionUID = -777613776515539264L;
	protected Connection conexao;
	
	
	

	/**
	 * Construtor default da classe
	 */
	public PacienteDAO() {
		conexao = ConnectionFactory.getConnection();
		procedimento();
		
	}
	
	/**
	 * Construtor da classe
	 * @param Connection conexao
	 */
	public PacienteDAO(Connection conexao){
		this.conexao = conexao;
		procedimento();
	}
	
	/**
	 * Metodo que cria a tabela de paciente caso nao exista
	 * e realiza a connexao com o BD
	 */
	private void procedimento(){
		PreparedStatement stmt;

		String sql = "create table if not exists Paciente(nome varchar(50), telefone varchar(25), email varchar(25),"
				+ "endereco varchar(50), cpf varchar(15) primary key, sexo ENUM('F','M') not null,"
				+ "codigoPlano integer, foreign key (codigoPlano) references PlanoDeSaude(codigoPlano), dataNascimento date)";

		try {
			stmt = conexao.prepareStatement(sql);
			stmt.execute();
			stmt.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}

	}
	/**
	 * Metodo que cria um objeto Paciente no BD de pacientes. Este metodo so
	 * pode ser usado quando ja existem planos de saude no BD de PlanoDeSaude.
	 * 
	 * @param Paciente
	 *            paciente
	 * @throws SQLException
	 */
	public void create(Paciente paciente) throws SQLException {
		String sql = "insert into Paciente(nome, telefone,"
				+ " email, endereco, cpf, sexo, codigoPlano, dataNascimento)"
				+ " values (?,?,?,?,?,?,?,?)";

		PreparedStatement stmt = conexao.prepareStatement(sql);

		stmt.setString(1, paciente.getNome());
		System.out.println("Dao: " + paciente.getTelefone());
		stmt.setString(2, paciente.getTelefone());
		if (paciente.getEmail() != null) {
			stmt.setString(3, paciente.getEmail());
		} else {
			stmt.setString(3, null);
		}
		
		
		stmt.setString(4, paciente.getEndereco());
		stmt.setString(5, paciente.getCPF());
		stmt.setString(6, paciente.getSexo().getNome());
		if ( paciente.getPlanoDeSaude() != null) {
			stmt.setInt(7, paciente.getPlanoDeSaude().getCodigo());
		} else {
			stmt.setObject(7, null);
		}
		if (paciente.getDataDeNascimento() != null) {
			java.util.Date dataUtil = paciente.getDataDeNascimento().getTime();
			java.sql.Date dataSql = new java.sql.Date(dataUtil.getTime());
			stmt.setDate(8, dataSql);
		} else {
			stmt.setObject(8, null);
		}
		
		stmt.execute();
		stmt.close();
		
	}
	
	/**
	 * Metodo que fecha uma conexao com o banco de dados.
	 * 
	 * @throws Exception
	 */
	public void closeConnection() throws Exception {
		conexao.close();
	}
	
	public Paciente recuperaObjetoPaciente(String cpf) throws Exception{
		PreparedStatement stmt = conexao
		.prepareStatement("select * from Paciente a LEFT"
				+ " JOIN PlanoDeSaude p ON a.codigoPlano = p.codigoPlano and a.cpf = (?)");
		stmt.setString(1, cpf);
		ResultSet rs = stmt.executeQuery();
		List<Paciente> listaPacientes = convertePesquisaEmLista(rs);
		
		if(listaPacientes.size() > 0){
			return listaPacientes.get(0);
		}
		
		throw new Exception("nao existe o paciente");
	}
	
	/**
	 * Metodo que retorna um objeto paciente com plano de saude.
	 * Necessita como parametro um String cpf
	 * e um Connection
	 * @param String cpf
	 * @param conexaoNova conexaoNova
	 * @return Paciente
	 * @throws Exception lancada quase nao existe paciente
	 */
	public static Paciente recuperaObjetoPaciente(String cpf, Connection conexaoNova) throws Exception{
		PreparedStatement stmt = conexaoNova
		.prepareStatement("select * from Paciente , PlanoDeSaude " +
				"Where Paciente.codigoPlano = PlanoDeSaude.codigoPlano and Paciente.cpf = (?)");
		stmt.setString(1, cpf);
		ResultSet rs = stmt.executeQuery();
		List<Paciente> listaPacientes = convertePesquisaEmLista(rs);
		
		if(listaPacientes.size() > 0){
			return listaPacientes.get(0);
		}
		
		throw new Exception("nao existe o paciente");
	}
	
	/**
	 * Metodo que converte uma pesquisa no BD
	 * em uma lista de pacientes
	 * @param ResultSet rs
	 * @return List<Paciente>
	 * @throws SQLException
	 */
	public static List<Paciente> convertePesquisaEmLista(ResultSet rs) throws SQLException{
		List<Paciente> listaPacientes = new ArrayList<Paciente>();
		Paciente pacienteTemp;
		while (rs.next()) {
			try {
				pacienteTemp = new Paciente(rs.getString("nome"), rs.getString("cpf"),Sexo.valueOf(rs.getString("sexo")));
				pacienteTemp.setEmail(rs.getString("email"));
				pacienteTemp.setEndereco(rs.getString("endereco"));
				pacienteTemp.setTelefone(rs.getString("telefone"));
				pacienteTemp.setDataDeNascimento(conversorData(rs.getDate("dataNascimento")
						.toString()));
				
				PlanoDeSaude ps = new PlanoDeSaude(rs.getString("nomeplano"), rs.getString("telefoneplano"),
						rs.getDouble("valorconsulta"), rs.getDouble("valorretorno"), rs.getInt("codigoplano"));
				

				pacienteTemp.setPlanoDeSaude(ps);
				if (!listaPacientes.contains(pacienteTemp)) 
					listaPacientes.add(pacienteTemp);
					
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		rs.close();
		return listaPacientes;
	}
	/**
	 * Metodo que recupera e imprime todos os dados de todos os pacientes do BD
	 * da clinica.
	 * 
	 * @throws SQLException
	 * @throws ParseException
	 */
	public void recuperaDadosPacientes() throws SQLException, ParseException {
		PreparedStatement stmt = conexao
				.prepareStatement("select * from Paciente, "
						+ "PlanoDeSaude where Paciente.codigoPlano = PlanoDeSaude.codigoPlano");

		ResultSet rs = stmt.executeQuery();

		List<Paciente> listaPacientes = convertePesquisaEmLista(rs);
		
		for(Paciente pact:listaPacientes){
			System.out.println("Nome: " + pact.getNome() + " | Telefone: "
					+ pact.getTelefone() + " | Email: " + pact.getEmail()
					+ " | Endereco: " + pact.getEndereco() + " | Cpf: "
					+ pact.getCPF() + " | SEXO: "
					+ pact.getSexo() + " | Data Nascimento: "
					+ new SimpleDateFormat("dd/MM/yyyy").format(pact.getDataDeNascimento()) 
					+ " | codigoPlano: " + pact.getPlanoDeSaude().getCodigo()
					+ " | Plano: " + pact.getPlanoDeSaude().getNomeDoPlano());
		}
		System.out.println(listaPacientes.size());

		
		stmt.close();
	}

	/**
	 * Metodo que atualiza um paciente modificando o seu cpf.
	 * 
	 * @param String
	 *            cpf
	 * @param String
	 *            novoCpf
	 * @throws SQLException
	 */
	public void update(String cpf, String novoCpf) throws SQLException {

		String sql = "update Paciente set cpf=(?) where cpf=(?)";
		PreparedStatement stmt = conexao.prepareStatement(sql);

		stmt.setString(1, novoCpf);
		stmt.setString(2, cpf);

		stmt.execute();
		stmt.close();

	}
	
	/**
	 * Metodo que atualiza os dados de um Paciente.
	 * Obs.: (muda telefone email endereço codigodoplano)
	 * @param Paciente paciente
	 * @throws SQLException
	 */
	public void editaPaciente(String cpfAnterior, Paciente paciente) throws SQLException {		
		String sql = "update Paciente set nome=?, cpf=?, telefone=?, email=?," +
				"endereco=?, codigoPlano=? where  cpf=?";
		
		PreparedStatement stmt = conexao.prepareStatement(sql);
		stmt.setString(1, paciente.getNome());
		stmt.setString(3, paciente.getTelefone());
		stmt.setString(4, paciente.getEmail());
		stmt.setString(5, paciente.getEndereco());
		stmt.setString(2, paciente.getCPF());
		
		stmt.setInt(6, paciente.getPlanoDeSaude().getCodigo());
		
		stmt.setString(7, cpfAnterior);
				
		stmt.executeUpdate();
		stmt.close();
		
	}		
	
	

	/**
	 * Metodo que deleta um paciente usando o seu cpf como chave.
	 * 
	 * @param String
	 *            cpf
	 * @throws SQLException
	 */
	public void delete(String cpf) throws SQLException {
		String sql = "delete from Paciente where cpf=?";
		PreparedStatement stmt = conexao.prepareStatement(sql);

		stmt.setString(1, cpf);

		
		stmt.execute();
		stmt.close();
	}
	

	/**
	 * Metodo acessador que retorna uma lista de pacientes.
	 * 
	 * @return List<Paciente> lista de pacientes.
	 * @throws SQLException 
	 */
	public List<Paciente> getListaPacientes() throws SQLException {
		PreparedStatement stmt = conexao.prepareStatement("select * from Paciente, "
				+ "PlanoDeSaude  where Paciente.codigoPlano = PlanoDeSaude.codigoPlano ORDER BY Paciente.nome");

		ResultSet rs = stmt.executeQuery();
		
		return convertePesquisaEmLista(rs);
	}
	
	/**
	 * Metodo que resgata todos os pacientes de um dado plano de saude.
	 * @param Integ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       er codigoPlano
	 * @return List<Paciente> Lista de pacientes.
	 * @throws SQLException
	 */
	public List<Paciente> selecionaPacientesPorPlano(int codigoPlano) throws SQLException {
		PreparedStatement stmt = conexao.prepareStatement("select * from Paciente"
				+ " codigoPlano = ? ORDER BY nome");
		
		stmt.setInt(1, codigoPlano);
		
		ResultSet rs = stmt.executeQuery();
		
		return convertePesquisaEmLista(rs);
	}

	/**
	 * Metodo usado para converter uma String num Calendar num dado formato.
	 * 
	 * @param String
	 *            data
	 * @return Calendar data
	 * @throws ParseException
	 */
	public static Calendar conversorData(String data) throws ParseException {
		DateFormat format;
		Date data_nova;
		format = new SimpleDateFormat("yyyy-MM-dd");
		data_nova = (Date) format.parse(data);
		Calendar cal = new GregorianCalendar();
		cal.setTime(data_nova);
		return cal;

	}
	
	/**
	 * Metodo usado para converter uma String em um Calendar num dado formato.
	 * @param String data
	 * @return Calendar data
	 * @throws ParseException
	 */
	public static Calendar conversorData2(String data) throws ParseException {
		DateFormat format;
		Date data_nova;
		format = new SimpleDateFormat("dd/MM/yyyy");
		data_nova = (Date)format.parse(data);
		Calendar cal = Calendar.getInstance();
		cal.setTime(data_nova);
		return cal;
		
	}
	
	/**
	 * Metodo usado para deletar todos os pacientes do bd.
	 * @throws SQLException
	 */
	public void deleteAll() throws SQLException {
		String sql = "delete from Paciente";
		PreparedStatement stmt = conexao.prepareStatement(sql);
		stmt.execute();
		stmt.close();
		
	}


}
